package net.crowtheries.wirelessrouting.utils;

import ptolemy.data.IntToken;
import ptolemy.data.RecordToken;
import ptolemy.data.StringToken;
import ptolemy.data.Token;
import ptolemy.kernel.util.IllegalActionException;

public class Packet {
	private RecordToken packetToken;
	private StringToken DSTIP;
	private StringToken SRCIP;
	private IntToken TTL;
	private UDPSegment SEG;
	
	public Packet(String DSTIP,String SRCIP, UDPSegment SEG) throws IllegalActionException{
		this.DSTIP=new StringToken(DSTIP);
		this.SRCIP=new StringToken(SRCIP);
		this.SEG=new UDPSegment(SEG.getSegmentToken());
		this.updatePacketToken();
	}
	
	public Packet(RecordToken token) throws IllegalActionException{
		this.DSTIP=(StringToken)token.get("DSTIP");
		this.SRCIP=(StringToken)token.get("SRCIP");
		//this.TTL=(IntToken)token.get("TTL");
		this.SEG=new UDPSegment((RecordToken)token.get("SEG"));
		this.updatePacketToken();
	}

	private void updatePacketToken() throws IllegalActionException{
		packetToken=new RecordToken(new String[]{
                "SRCIP",
                "DSTIP",
                "SEG",
            //    "TTL"
            },new Token[]{
                 this.SRCIP,
                 this.DSTIP,
                 this.SEG.getSegmentToken(),
              //   this.TTL,
            });
	}
	
	public String getSRCIP(){
		return this.SRCIP.stringValue();
	}
	
	public String getDSTIP(){
		return this.DSTIP.stringValue();
	}
	
	public int getTTL(){
		return this.TTL.intValue();
	}
	
	public UDPSegment getUDPSegment(){
		return this.SEG;
	}
	
	public void setDSTIP(String DSTIP) throws IllegalActionException{
		this.DSTIP=new StringToken(DSTIP);
		this.updatePacketToken();
	}
	
	public RecordToken getPacketToken(){
		return packetToken;
	}
	
}
